#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "qtimer.h"
#include <QDateTime>
#include <QDate>
#include <QStringListModel>
#include "QStandardItem"
#include "CANCard/GC/canset.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();


public:
    void Interface_Init();      //界面配置初始化
    void Equ_runinfo_init();    //设备运行数据初始化
    void Hid_fault_Init();




private slots:
    void Data_Refresh();            //数据刷新函数
    void Protect_fun();             //保护函数
    void HidFault_Scan();           //故障扫描
    void Interface_Refresh();       //界面刷新函数
    void Fault_show();              //故障显示
    void EQRun_loglist();           //运行日志
    void save_data();               //数据储存
    void Auto_Runlog_info();        //关键信息自动记录
    void ADD_Savedata_Titlebar();   //储存数据追加标题
    void ADD_Savedata_Line();       //储存数据追加数据内
    void on_actionCAN_triggered();
    void on_checkBox_mancotr_stateChanged(int arg1);
    void on_actionactionMQTT_triggered();
    void on_pushButton_time_clear_clicked();
    void on_pushButton_faultclear_clicked();
    void on_pushButton_Timing_Starts_clicked();
    void on_pushButton_Timing_reset_clicked();
    void on_pushButton_SetTiming_clicked();
    void on_radioButton_SetMode_off_clicked(bool checked);

    void on_radioButton_SetMode_cooling_clicked(bool checked);

    void on_radioButton_SetMode_heating_clicked(bool checked);

    void on_radioButton_SetMode_self_cycle_clicked(bool checked);

    void on_radioButton_BMS_DCH_OFF_clicked(bool checked);

    void on_radioButton_BMS_DCH_ON_clicked(bool checked);

    void on_radioButton_BMS_UP_HV_UP_clicked(bool checked);

    void on_radioButton_BMS_UP_HV_DOWN_clicked(bool checked);

    void on_radioButton_BMS_Charge_State_NO_clicked(bool checked);

    void on_radioButton_BMS_Charge_State_YES_clicked(bool checked);

    void on_pushButton_BMS_HV_clicked();

    void on_pushButton_BMS_TEMP_Target_clicked();

    void on_checkBox_Debug_stateChanged(int arg1);

    void on_checkBox_PC_CONTROL_stateChanged(int arg1);

    void on_checkBox_CAN_BIT_OUT1_stateChanged(int arg1);

    void on_pushButton_CAN_OUT1_clicked();

    void on_checkBox_CAN_BIT_OUT2_stateChanged(int arg1);

    void on_pushButton_CAN_OUT2_clicked();

    void on_checkBox_CAN_BIT_OUT3_stateChanged(int arg1);

    void on_pushButton_CAN_OUT3_clicked();

    void on_checkBox_CAN_BIT_OUT4_stateChanged(int arg1);

    void on_pushButton_CAN_OUT4_clicked();


    void on_checkBox_CAN_BIT_CTRL_stateChanged(int arg1);

    void on_pushButton_CAN_CTRL_clicked();

    void on_checkBox_MA_BIT_ERR_Reset_stateChanged(int arg1);

    void on_pushButton_MA_ERR_Reset_clicked();

    void on_pushButton_password_clicked();

signals:
    void Displayrefresh_signal(int);

private:
    Ui::MainWindow *ui;
    CANset *canset=nullptr;
    QTimer *Interface_Rtimer,*Timer_10s;
    quint16 Interface_rt,Timer_10s_rt;
    QStringListModel *FaultListModel;
    QStringList FaultList; //故障列表
    QTime StartTime; //启动时间参数
    QTime NowTime; //当前时间参数
    QTime StartTime_SetRun,NowTime_SetRun; //当前时间参数
    quint8 Rest_count;//复位技术参数
    bool Save_Data;  //储存数据控制位
    QString fileName;   //运行数据储存文档
    quint8 git_new_titlebar;  //控制数据标题写入
    quint8 rest_par_1,rest_par_2,rest_par_3,rest_par_4;//故障复位控制参数，计数到一定时间对故障复位进行重置
    quint16 Cell_number_1;
    bool SetRunTime_BIT;
    quint32 SetRunTime;
    int MA_ERR_Reset_k;
};
#endif // MAINWINDOW_H
